package com.atguigu.yygh.hosp.controller.api;

import com.atguigu.yygh.common.exception.YyghException;
import com.atguigu.yygh.common.utils.MD5;
import com.atguigu.yygh.hosp.bean.Result;
import com.atguigu.yygh.hosp.service.HospitalService;
import com.atguigu.yygh.hosp.utlis.HttpRequestHelper;
import com.atguigu.yygh.model.hosp.Hospital;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @description:
 * @author :又菜又爱玩的→速趴塞亚锦←
 * @create :2023/5/16
 * @param  :1.8
 */
@RestController
@RequestMapping("/api/hosp")
public class ApiHospitalController {

    @Autowired
    private HospitalService hospitalService;


    /**
     * @description:第三方医院管理的基本信息显示操作
     * @author :又菜又爱玩的→速趴塞亚锦←
     * @create :2023/5/17
     * @param  :1.8
     */
    @PostMapping("/hospital/show")
    public Result<Hospital> getHospitalInfo(HttpServletRequest request){

        Map<String, Object> stringObjectMap = HttpRequestHelper.switchMap(request.getParameterMap());
        String hoscode = (String)stringObjectMap.get("hoscode");//查询本机Hoscode对应的方法
        //1.signkey验证://做一个MD5是否一致的if判断等等。。。。
        Hospital hospital=hospitalService.getHospitalByHoscode(hoscode);
        return Result.ok(hospital);
    }

    /**
     * @description:添加josn的接口
     * @author :又菜又爱玩的→速趴塞亚锦←
     * @create :2023/5/17
     * @param  :1.8
     */
    @PostMapping("/saveHospital")
    public Result saveHospital(HttpServletRequest request){
        //在此处 做了简化
//        Map<String,String[]> parameterMap = request.getParameterMap();
        //TODO 1.获取所有的参数，也可以获取单个的      现在的这个resultMap就是自定义工具类里面的
        Map<String, Object> resultMap= HttpRequestHelper.switchMap(request.getParameterMap());

        String requestSignKey = (String)resultMap.get("sign");//传过来的和自己纯的做对比、、第三方医院传过来的
        String requestHoscode = (String)resultMap.get("hoscode");//传过来的和自己纯的做对比
        //platformSignKey = 平台保存的
        String platformSignKey= hospitalService.getSignKeyWithHoscode(requestHoscode);
        //把自己的也给MD5加密，好做对比， 因为第三方传过来的已经做了MD5加密，所以自己的不加永远都对比不相同
        String encrypt = MD5.encrypt(platformSignKey);

        //signkey验证 //做一个MD5是否一致的if判断
        if(!StringUtils.isEmpty(requestSignKey) && !StringUtils.isEmpty(encrypt) && encrypt.equals(requestSignKey) ){
                //取出logoData
            String logoData = (String)resultMap.get("logoData");//传输图片的时候会把加号变成空格，这里我们需要还原成原来的加号
               //把加号变成空格，这里我们需要还原成原来的加号
            String result = logoData.replaceAll(" ", "+");
             //返回的结果在放回resultMap 集合里面
            resultMap.put("logoData",result);


            hospitalService.saveHospital(resultMap);
            return Result.ok();
        }else{

            throw  new YyghException(20001,"保存失败");
        }
    }
}
